package Q242;

import java.util.Arrays;

/**
 * 有效的字母异位词
 * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
 *
 * 注意：若s 和 t中每个字符出现的次数都相同，则称s 和 t互为字母异位词。
 * @author 23737
 * @time 2021.11.23
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(new Solution().isAnagram("anagram", "nagaram"));
        System.out.println(new Solution2().isAnagram("anagram", "nagaram"));
    }
}

/**
 * 排序然后比较
 */
class Solution {
    public boolean isAnagram(String s, String t) {
        char[] chars = s.toCharArray();
        char[] chars1 = t.toCharArray();

        Arrays.sort(chars);
        Arrays.sort(chars1);

        return Arrays.equals(chars,chars1);
    }
}

/**
 * 哈希表
 */
class Solution2 {
    public boolean isAnagram(String s, String t) {
        char[] chars = s.toCharArray();
        char[] chars1 = t.toCharArray();

        int[] result = new int[25];

        for (char aChar : chars) {
            result[aChar-'a']++;
        }

        for (char c : chars1) {
            result[c-'a']--;
        }

        for (int i : result) {
            if (i != 0){
                return false;
            }
        }
        return true;
    }
}



